1. Field of the Invention
The invention relates to migration of data in storage systems. More specifically, the invention relates to migration of data blocks, or stripes, on disks of a storage system onto newly implemented disks used to increase capacity in the storage system.
2. Discussion of the Related Art
High Performance storage systems typically include multiple hard disk drives (“disks”) and storage management to provide improved storage performance and fault tolerance. Performance and fault tolerance of storage exist on many levels. One method of improving performance includes “striping” data on the disks such that the stripes are spread across multiple disks. An example of one such storage system that provides striping is a RAID Level 0 (“RAID0”). Fault tolerance can be achieved in the storage system by employing storage management to include redundant information, such as RAID storage management. Examples of RAID storage management include RAID Level 1 (“RAID1”) which mirrors data on a first drive to a second drive, RAID Level 3 (“RAID3”) which provides data striping with one disk reserved for error correction, and RAID Level 5 (“RAID5”) which provides data striping and data stripe error correction.
Often, storage systems are upgraded to increase storage capacity. Upgrades typically include adding more disks to a storage system. When disks are added to the storage system, the storage system migrates (e.g., moves) some data from portions of present disks (“source disks”) to the disks being added. This migration is preferably performed in such a manner to ensure that fault tolerance features of the storage system are maintained and that the performance of striping is enhanced.
Prior migration techniques of storage systems typically used software to store progress information regarding the migration process. In such techniques, a migration pointer may be used to maintain data consistency between the source disks and the newly added disks. For example, as a block of data is migrated from a source disk to a new disk, the migration pointer maintains information about the progress of migration. Based on such a migration pointer, the storage controller could process I/O requests that required access only to portions of the volume for which the migration has completed. However, prior migration techniques using software methods are susceptible to data loss when, for example, power is removed. In the event of a power outage, volatile computer memory loses information about the migration pointer.
To counter the effects of power outages, some migration techniques have been improved by employing Non-Volatile memory devices that maintain progress information about the migration through power loss. Once power is restored after a power outage, migration resumes from a location determined upon reading the migration pointer from Non-Volatile memory. One example of Non-Volatile memory includes Non-Volatile Random Access Memory (“NVRAM”).
NVRAM, while useful in storing and recovering migration information, has its own drawbacks. An implementation of NVRAM into a storage system unnecessarily complicates the storage system because, among other reasons, the NVRAM is not easily shared by multiple storage controllers. Some storage systems include multiple storage controllers to improve performance, reliability or both. It is therefore useful to store migration pointer information on other Non-Volatile memory devices that are more easily shared. For example, the migration pointer may be stored on the disk drives of the storage system. However, frequent updates to such a pointer waste valuable disk communication bandwidth.
It is evident from the above discussion that there is an ongoing need to provide improved methods and structures for storage migration related to capacity increases that maintain tolerance to power losses and/or other migration interruptions.